package com.zhj.leetcode.day02;

/**
 * @author zhj
 */
public class Test20210514 {

    public static void main(String[] args) {
        int[][] logs1 = {{1993,1999},{2000,2010}};
        System.out.println(maximumPopulation(logs1));
        int[][] logs2 = {{1950,1961},{1960,1971},{1970,1981}};
        System.out.println(maximumPopulation(logs2));
    }

    /**
     * 给你一个二维整数数组 logs ，其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。
     *
     * 年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足：x 在闭区间 [birthi, deathi - 1] 内。注意，人不应当计入他们死亡当年的人口中。
     *
     * 返回 人口最多 且 最早 的年份。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/maximum-population-year
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * @param logs
     * @return
     */
    public static int maximumPopulation(int[][] logs) {
        int res = 0, cnt = 0;
        for (int i = 1950; i <= 2050; i++) {    //循环年份
            int s = 0;      //记录当前年份存活人数
            for (int[] log : logs)
                if (i >= log[0] && i < log[1])  //如果存活
                    s ++ ;
            if (s > cnt) {  //记录存活人数最大值
                res = i;    //存活人数最多的年份
                cnt = s;
            }
        }
        return res;
    }

}
